sgdk
|
00001 00015 #ifndef _Z80_CTRL_H_ 00016 #define _Z80_CTRL_H_ 00017 00018 00019 #define Z80_HALT_PORT 0xA11100 00020 #define Z80_RESET_PORT 0xA11200 00021 00027 #define Z80_RAM_START 0xA00000 00028 00033 #define Z80_RAM_END 0xA01FFF 00034 00039 #define Z80_RAM Z80_RAM_START 00040 00045 #define Z80_RAM_LEN ((Z80_RAM_END - Z80_RAM_START) + 1) 00046 00051 #define Z80_YM2612 0xA04000 00052 00057 #define Z80_BANK_REGISTER 0xA06000 00058 00064 #define Z80_DRV_COMMAND 0xA00100 00065 00070 #define Z80_DRV_STATUS 0xA00102 00071 00076 #define Z80_DRV_PARAMS 0xA00104 00077 00078 // default command and status value 00079 #define Z80_DRV_COM_PLAY_SFT 0 00080 #define Z80_DRV_COM_STOP_SFT 4 00081 #define Z80_DRV_STAT_PLAYING_SFT 0 00082 #define Z80_DRV_STAT_READY_SFT 7 00083 00089 #define Z80_DRV_COM_PLAY (1 << Z80_DRV_COM_PLAY_SFT) 00090 00095 #define Z80_DRV_COM_STOP (1 << Z80_DRV_COM_STOP_SFT) 00096 00101 #define Z80_DRV_STAT_PLAYING (1 << Z80_DRV_STAT_PLAYING_SFT) 00102 00107 #define Z80_DRV_STAT_READY (1 << Z80_DRV_STAT_READY_SFT) 00108 00109 // channel definition 00110 #define Z80_DRV_CH0_SFT 0 00111 #define Z80_DRV_CH1_SFT 1 00112 #define Z80_DRV_CH2_SFT 2 00113 #define Z80_DRV_CH3_SFT 3 00114 00120 #define Z80_DRV_CH0 (1 << Z80_DRV_CH0_SFT) 00121 00126 #define Z80_DRV_CH1 (1 << Z80_DRV_CH1_SFT) 00127 00132 #define Z80_DRV_CH2 (1 << Z80_DRV_CH2_SFT) 00133 00138 #define Z80_DRV_CH3 (1 << Z80_DRV_CH3_SFT) 00139 00140 00146 #define Z80_DRIVER_NULL 0 00147 00153 #define Z80_DRIVER_PCM 1 00154 00160 #define Z80_DRIVER_2ADPCM 2 00161 00168 #define Z80_DRIVER_4PCM_ENV 4 00169 00174 #define Z80_DRIVER_MVS 5 00175 00180 #define Z80_DRIVER_TFM 6 00181 00188 #define Z80_DRIVER_VGM 7 00189 00197 #define Z80_DRIVER_XGM 8 00198 00203 #define Z80_DRIVER_CUSTOM -1 00204 00205 #define Z80_DRIVER_DEFAULT Z80_DRIVER_PCM 00206 00207 00214 void Z80_init(); 00215 00220 u16 Z80_isBusTaken(); 00227 void Z80_requestBus(u16 wait); 00232 void Z80_releaseBus(); 00233 00238 void Z80_startReset(); 00243 void Z80_endReset(); 00244 00251 void Z80_setBank(const u16 bank); 00252 00263 u8 Z80_read(const u16 addr); 00276 void Z80_write(const u16 addr, const u8 value); 00277 00288 void Z80_clear(const u16 dest, const u16 size, const u16 resetz80); 00301 void Z80_upload(const u16 dest, const u8 *data, const u16 size, const u16 resetz80); 00313 void Z80_download(const u16 from, u8 *dest, const u16 size); 00314 00331 u16 Z80_getLoadedDriver(); 00336 void Z80_unloadDriver(); 00355 void Z80_loadDriver(const u16 driver, const u16 waitReady); 00365 void Z80_loadCustomDriver(const u8 *drv, u16 size); 00366 00371 u16 Z80_isDriverReady(); 00372 00373 00374 #endif // _Z80_CTRL_H_